/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DA;

import BE.BEPosicionxRack;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Cristian
 */
public class DAPosicionxrack {


    public ArrayList<BEPosicionxRack> cargar() {

        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        ArrayList<BEPosicionxRack> lstPos = new ArrayList<BEPosicionxRack>();

        try
        {
            //guardo los datos del perfil

            con = bd.conectar();
            //JOptionPane.showMessageDialog(null,"Hola mundo","Error",JOptionPane.ERROR_MESSAGE);
            String query = "Select * from posicionxrack where estado=?";

            PreparedStatement p=con.prepareStatement(query);
            
            p.setInt(1, 0);

            rs=p.executeQuery();


            while(rs.next())
            {

                BEPosicionxRack auxPos = new BEPosicionxRack();

                auxPos.setIdposicionxrack(rs.getInt("idposicionxrack"));
                auxPos.setIdrack(rs.getInt("idrack"));
                auxPos.setFila(rs.getInt("fila"));
                auxPos.setColumna(rs.getInt("columna"));
                auxPos.setEstado(rs.getInt("estado"));
                auxPos.setIdzona(rs.getInt("idzona"));

                lstPos.add(auxPos);

            }


        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Registro de Usuarios",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);

        //JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Registro de Usuarios",JOptionPane.INFORMATION_MESSAGE);
        return lstPos;
    }


   public ArrayList<BEPosicionxRack> getTodos() {

        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        ArrayList<BEPosicionxRack> lstPos = new ArrayList<BEPosicionxRack>();

        try
        {
            //guardo los datos del perfil

            con = bd.conectar();
            //JOptionPane.showMessageDialog(null,"Hola mundo","Error",JOptionPane.ERROR_MESSAGE);
            String query = "Select * from posicionxrack";

            PreparedStatement p=con.prepareStatement(query);
            
           

            rs=p.executeQuery();


            while(rs.next())
            {

                BEPosicionxRack auxPos = new BEPosicionxRack();

                auxPos.setIdposicionxrack(rs.getInt("idposicionxrack"));
                auxPos.setIdrack(rs.getInt("idrack"));
                auxPos.setFila(rs.getInt("fila"));
                auxPos.setColumna(rs.getInt("columna"));
                auxPos.setEstado(rs.getInt("estado"));
                auxPos.setIdzona(rs.getInt("idzona"));

                lstPos.add(auxPos);

            }


        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Registro de Usuarios",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);

        //JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Registro de Usuarios",JOptionPane.INFORMATION_MESSAGE);
        return lstPos;
    }

    public void cambiarEstado (int id, int estado)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        String query = "UPDATE posicionxrack SET ESTADO = "+estado+" WHERE idposicionxrack = "+id;
        
        //JOptionPane.showMessageDialog(null,query,"Error",JOptionPane.ERROR_MESSAGE);
        
        try
        {
            con = bd.conectar();
            s = con.createStatement();
            s.executeUpdate(query);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de borrar datos","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);
    }





      public BEPosicionxRack getById(int id) {

        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        BEPosicionxRack auxPos= null;
        try
        {
            //guardo los datos del perfil

            con = bd.conectar();
            //JOptionPane.showMessageDialog(null,"Hola mundo","Error",JOptionPane.ERROR_MESSAGE);
            String query = "Select * from posicionxrack where idposicionxrack=" +id;

            PreparedStatement p=con.prepareStatement(query);

            rs=p.executeQuery();


            while(rs.next())
            { 
            

                auxPos = new BEPosicionxRack();

                auxPos.setIdposicionxrack(rs.getInt("idposicionxrack"));
                auxPos.setIdrack(rs.getInt("idrack"));
                auxPos.setFila(rs.getInt("fila"));
                auxPos.setColumna(rs.getInt("columna"));
                auxPos.setEstado(rs.getInt("estado"));
                auxPos.setIdzona(rs.getInt("idzona"));


            }


        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Registro de Usuarios",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);

        //JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Registro de Usuarios",JOptionPane.INFORMATION_MESSAGE);
        return auxPos;
    }




         public ArrayList<BEPosicionxRack> getByIdRack(int id) {

        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        ArrayList<BEPosicionxRack> lstPos = new ArrayList<BEPosicionxRack>();

        try
        {
            //guardo los datos del perfil

            con = bd.conectar();
            //JOptionPane.showMessageDialog(null,"Hola mundo","Error",JOptionPane.ERROR_MESSAGE);
            String query = "Select * from posicionxrack where idrack=" +id + " order by 1";

            PreparedStatement p=con.prepareStatement(query);

            rs=p.executeQuery();



            while(rs.next()){

             BEPosicionxRack auxPos = new BEPosicionxRack();

                auxPos.setIdposicionxrack(rs.getInt("idposicionxrack"));
                auxPos.setIdrack(rs.getInt("idrack"));
                auxPos.setFila(rs.getInt("fila"));
                auxPos.setColumna(rs.getInt("columna"));
                auxPos.setEstado(rs.getInt("estado"));
                auxPos.setIdzona(rs.getInt("idzona"));

                lstPos.add(auxPos);

            }



        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Registro de Usuarios",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);

        //JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Registro de Usuarios",JOptionPane.INFORMATION_MESSAGE);
        return lstPos;
    }

    public void actualizarPosicion(BEPosicionxRack objPosAux) {
        
        
       // JOptionPane.showMessageDialog(null,objPosAux.getIdposicionxrack(),"Registro de Posiciones",JOptionPane.INFORMATION_MESSAGE);
        cambiarEstado(objPosAux.getIdposicionxrack(), 1);
        cabiarPosicionEnPallet(objPosAux.getIdposicionxrack(),objPosAux.getIdpallet());
        
    }
    
    public void liberarPosicion(BEPosicionxRack objPosAux){
        cambiarEstado(objPosAux.getIdposicionxrack(), 0);
        liberarPosicionEnPallet(objPosAux.getIdpallet());
    }    
    
    private void liberarPosicionEnPallet(int idpallet) {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        String query = "UPDATE pallet  SET idposicionxrack=null WHERE idpallet=?";
        try
        {
            
            
            con = bd.conectar();
            PreparedStatement p=con.prepareStatement(query);
            

            //p.setInt(1, idposicionxrack);
            p.setInt(1, idpallet);
            
            p.executeUpdate();
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de limpiar la posicion del pallet","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);
    }

    private void cabiarPosicionEnPallet(int idposicionxrack, int idpallet) {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        String query = "UPDATE pallet  SET idposicionxrack=? WHERE idpallet=?";
        try
        {
            
            
            con = bd.conectar();
            PreparedStatement p=con.prepareStatement(query);
            

            p.setInt(1, idposicionxrack);
            p.setInt(2, idpallet);
            
            p.executeUpdate();
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de ingresar la posicion del pallet","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);
    }

    
    public ArrayList<BEPosicionxRack> cargarPosicionesPorTipoProducto(int idTipoProducto) {
        
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        ArrayList<BEPosicionxRack> lstPos = new ArrayList<BEPosicionxRack>();

        try
        {
            //guardo los datos del perfil

            con = bd.conectar();
            //JOptionPane.showMessageDialog(null,"Hola mundo","Error",JOptionPane.ERROR_MESSAGE);
            String query = "SELECT pxr.idposicionxrack, pxr.idrack, pxr.fila, pxr.columna, pxr.estado, pxr.idzona FROM posicionxrack pxr, rack r, zonas z WHERE pxr.estado=? and pxr.idrack= r.idrack and r.idzonas=z.idzonas and z.idtipoproducto=?";

            PreparedStatement p=con.prepareStatement(query);
            
            p.setInt(1, 0);
            p.setInt(2, idTipoProducto);

            rs=p.executeQuery();


            while(rs.next())
            {

                BEPosicionxRack auxPos = new BEPosicionxRack();

                auxPos.setIdposicionxrack(rs.getInt("idposicionxrack"));
                auxPos.setIdrack(rs.getInt("idrack"));
                auxPos.setFila(rs.getInt("fila"));
                auxPos.setColumna(rs.getInt("columna"));
                auxPos.setEstado(rs.getInt("estado"));
                auxPos.setIdzona(rs.getInt("idzona"));

                lstPos.add(auxPos);

            }


        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Registro de Usuarios",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);

        //JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Registro de Usuarios",JOptionPane.INFORMATION_MESSAGE);
        return lstPos;
    }

}












